●SGL Ver2.00　サンプルプログラム動作方法

【SNASMの起動方法と操作について(SGLのサンプルプログラムを例として)】

<SNASMデバッガの起動方法>
(1) CartDevとDevSatrunの電源を入れます。
(2) ホストマシンのIBM-PCの電源を入れて起動します。
(3) 実行したいサンプルのディレクトリにカレントを移動します。
(4) そこからDOSを英語モードにし、SNASMデバッガ(snbugsat.exe)を起動して下さい。
  SNASMデバッガは日本語モードでは起動しません。
    また、COFファイルなどをロードする際、snbugsat.exeを呼び出したディレクトリ
  (snbugsat.exeのあるディレクトリではありません)をカレントとします。
　具体的には以下のようなバッチファイルを作成しておくと良いと思われます。

  <SN.BAT 作成例>
        chev us　　　　　　;英語モードに変更
        mode con lines=50　;ライン数を50に変更
        snbugsat　　　　　 ;SNASMを起動(pathを通しておくこと)
        chev jp　　　　　　;日本語モードに戻す

(5) SNASM起動後、メインCPUを選択するため、「1」を入力します。
　  DevSaturn画面が"SEGA SATURN"表示に続いて、セガロゴ及びライセンスを表示すれ
  ば、システムの初期化は完了です。
(6) 「File」メニューから「Load COFF with Debug Info」を選択し、ダイアログを開き
  ます。
(7) SL.COFファイルを選択し、ロードします。
(8) 「Execution」メニューの「Run From PC」を選択すると、サンプルが起動します。
(9) 「Execution」メニューの「Stop(DMA & Interrupt)」を選択すると、プログラムが
  停止します(DMAや割り込みも含めて)。
(10)「File」メニューの「Quit(No Save)」でSNASMデバッガを終了してDOSに戻ります。

<ソースプログラムの参照方法>
(1) ソースプログラムを参照したい場合は、コンパイル時のオプションに必ず"-g"を付
けて コンパイルしてください。
(2) COFF形式のファイルのロード後、「Windows」メニューの「Mixed」を選択します。
(3) 次にCソースウインドウをクリックして、アクティブにします。
(4) 「origin」メニューの「Goto...」を選択し、「Expression Input」に参照したい
  関数名("main"など)を入力します。その結果、Cのソースコードが表示されます。
(5) Cソースウインドウの「Execution」メニューから「Run From PC」を選択すると、
  サンプルが動作します。
(6) Cソースウインドウにおいて、ハイライトの行にBREAKをかけることもできます。
　  a.[F5]キーがトグルになっており、１度入力するとBREAKします
　  b.[F6]キーでプログラムが実行し、[F5]キーの入力されたBREAK位置で停止します。
　  c.[F5]キーでBREAKを解除します。
　  d.[F9]キーで実行します。

【SGI環境の起動方法と操作について(SGLのサンプルプログラムを例として)】

<起動方法>
(1)コンパイル
 コンパイルするには、shell上で makeコマンドを実行

(2)サターン上での実行
  a)cartdev-serverの実行
    cartdev-serverを実行するにはuso.binというモニタプログラムが/usr/Cartdev/binに
  あったとすると、
      cartdev-server -m /usr/Cartdev/bin/uso.bin
  と打ち込みます。
      Accept network conection.
  というメッセージが出てきたら完了です。
    上の方法ではshellが一つ奪われますので、それがいやならば、
      cartdev-server -m /usr/Cartdev/bin/uso.bin > & /dev/null
  とするとバックグラウンドで動かす事が出来ます。

  b)デバッガの起動
    実行させたいプログラムのあるディレクトリに移動して
      cartdev-gdb sl.coff
  と打ち込みます。
  gdbが起動したら、
      target cartdev-server
  と打ち込みサーバプロセスと接続を試みます。成功すると
      Connect to remote cartDev-server.
      Open remote cartDev-Server.
      connected
  と表示されます。

  c)プログラムの実行
      load sl.coff
  と打ち込むと、SATURN本体にプログラムがロードされます。
      r
  でプログラムを実行できます。

　※注意)CD用のプログラムの実行について、
  　CDアクセスをする際には、予めSATURNのセキュリティを外しておく必要があります。
　前もって、cartdev-serverが裏プロセスで動いていないか確認した後、
　　Cartdev、DevSATURNの電源を落しSaturnにSYSTEM-DISCを入れます。
　　Cartdev→DevSATURNの順に電源を入れ画面の左上にCOMPLETEの文字が出てから使う
　CDを入れます。
　その後cartdev-serverを立ち上げます。

<プログラムの評価及びソースコードデバッギングについて>
(1) プログラムリストの表示
  1行目から10行目迄を表示
    l 1,10
  ファイルfoo.cの1行目から10行目迄を表示
    l foo.c:1,10
(2) メモリのダンプ
   xというコマンドがあります。
   書式は、
     x/nfu addr
       n:繰り返し回数
       f:出力フォーマット
       x:16進
       d:符合付10進
       u:10進
       o:8進
       t:2進
       c:アスキーキャラクタ
       u:データ長
         b:byte    (1 byte)
         h:short   (2 byte)
         w:long    (4 byte)
         g:long x 2(8 byte)
  例えば、0x06004000から256バイトをデータ長2バイト16進表記の場合
      x/128xh 0x06004000
(3) 変数の再設定
  例えば変数aを125に設定する時、
    set var a = 125
(4) 変数の表示
    print a
  ブレーク毎に表示させる場合
    display a
  ※print及びdisplayには、上記のxコマンド同様フォーマット指定が使用出来ます。
(5) ステップ実行
    step:1命令毎（関数内も含む）
    next:1実行モジュール毎（関数は１つの実行モジュール）
(6) ブレークポイント設定
  foo.cの関数subroutineでブレークを掛ける場合、
    b foo.c:subroutine
  foo.cの10行めで停止
    b foo.c:10
  条件停止
    foo.cの関数subroutineでブレークを掛ける場合、(但し変数xが10の時のみ）
      if foo.c:subroutine if x == 10
(7) ウォッチポイントの設定
  ウォッチポイントとは特定のメモリ値が変化したかどうかを調べるものです。
  使い方は
    アドレス0x06004000の内容が変更したかを知りたい場合、
      watch 0x06004000
    変数xの内容が変更されたかを知りたい場合、
      watch &x

<Makefileと条件コンパイルの応用>
  Makefile中にDFLAGSというマクロがあるがこれを利用すると、外部から条件コンパイル
を制御出来ます。
　例えば、
　　#ifdef DEBUG
　　　　:
　　　　A
　　　　:
　　#else
　　　　:
　　　　B
　　　　:
　　#endif
　というプログラムをmake時に。
　　make DFLAGS=-DDEBUG
    　　          ^^^^^
　とすると、Aの部分を
　　make
　とすれば、Bの部分をコンパイル出来ます。
　　これはMakefile中で、gccを呼ぶ際、DFLAGSマクロで示されるオプションをつけて
　コンパイルしているためで、make実行時にマクロの変更が出来るからです。

【今回配布するサンプルプログラムについての補足】
　SGLのサンプルプログラムは、Makeを使用してCOFF形式のファイルを作成後、各種デバ
ッガを使用して動作させてください。
　また、以下のディレクトリにあるサンプルは次のような手順で実行して下さい。

１．SGL CDのサンプルプログラム（ディレクトリ S_CD1,S_CD2,S_CD3,S_CD4）
(1)SGL TOOL KIT CD-ROM をセットした状態で、CartDevおよびDevSaturnを起動します。
(2)システムを初期化します。これは他のサンプルと同様の方法で構いません。
(3) それぞれプログラムを読み込み、実行します。
    このうちS_CD1,S_CD2,S_CD3においては、画面上にファイル読み込み状態の数字が次
  々と表示されますが、"stat: 00000100"と表示されればプログラムは正常に動作して
  います。
    そこでプログラムは終了しますが、画面表示の都合上それ以前の表示も残ります。
　  S_CD4については、SGL TOOL KIT CD-ROM に記録されたサウンド(マルチプレーヤー
  画面などで確認できます)が再生されればOKです。

２．バーチャガンのサンプルプログラム（ディレクトリ DEMOGUN）
(1) バーチャガン(弊社のもの)を1Pまたは2Pに接続してシステムを起動します。
(2) 画面上に以下の数字が表示されます

  Player 1 ID =      25 ;1Pのポートにバーチャガンが接続されていることを示します
　  　　 DATA =    FFFF ;スイッチデータが表示されます
　  　　 X    =     253 ;ガンが示している画面上のX座標を表します
　  　　 Y    =     153 ;ガンが示している画面上のY座標を表します

  (注) XY画面座標は左上を起点としていますが、ディスプレイによっては左隅を撃って
     も(0,0)とならない場合があります。
       また、画面外を撃った場合は(0,0)を示します。

　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　−以上−
